package chwgigs_jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class hi_jdbc {

	//   JDBC 데이터베이스에 접근하고 조작하는 것은 아주 
	//   중요한 주제중의 하나이다
	//  
	//   데이터베이스에는 여러 브랜드가 있음.
	//    oracle, MYSQL, MSSQL  등등
	//   
	//   모든 데이터베이스 서버는 독점적인 방식을 통해 접근하고 관리하도록
	//   허용됨
	//   따라서 각각의 데이터베이스에 접근하려면 각 브랜드가 제공하는 
	//   기술을 사용해야 한다. 
	//
	//   운좋게도 자바에서는 JDBC 를 제공한다.
	//   통일된 방식으로 접근하게 하는 JDBC를 제공한다. 
	//   JAVA 7은 JDBC 4.1 을 제공
	
	//   JDBC CORE API : java. sql 패키지 
	//   JDBC Optional API : javax. sql 패키지 
	
	// <JDBC Driver> 
	// 데이터 베이스 제조사가 제공하는 라이브러리 
	// 각 제조사는 자신만의 독점적인 기술을 이 라이브러리에 포함시켜 둔다. 
	// 이것을  JDBC API 라는 통일된 코드를 이용해서 데이터베이스를 제어 할 수 있다. 
	
	//<데이터베이스 접근 4단계>
	
	//1. 데이터베이스에 접근하기 위해 JDBC 드라이버 불러오기 
	//2. 데이터베이스 연결 얻기
	//3. 실행할 SQL 문장을 만들기 위해 
	//   statement /   
	// preparedStatement 객체 생성 
	// 4. SQL 문장을 실행하고 데이터베이스로 부터 넘어온 결과를 처리하기 위해 
	//   ResultSet 객체를 생성
	// 5. 모든 처리가 끝나면 JDBC자원 해제 
	//
	//  oracle JDBC 드라이버 등록 
	//  Jdbc6. jar 를 라이브러리로 등록 
	
	public static void main(String[] args) {
		
		//오라클 데이터 베이스 연결 정보 
		final String DRV= "oracle.jdbc.driver.OracleDriver " ; 
	    final String URL= " jdbc: oracle: thin;@112.216.253.125:1521:xe" ; 
		final String USR= "chwgigs" ; 
		final String PWD="chwgigs" ; 

		// MySQL 데이터베이스 연결 정보 
		// DRV = "com. mysql. jdbc. Driver"
		// url   =   "jcbc: mysql ://112.216.253.125. 3306/ zipcode ;
		// usr =     "zipcode"
		// pwd =    "zipcode"
	
		
    //  데이터베이스 작업용 객체 정의 
		Connection conn = null;            //연결
		PreparedStatement pstmt= null;   //질의 
		ResultSet rs =null;                   //결과 
		String SQL = "select * from employees";
	
	
   //	1. JDBC 드라이버 불러오기 
		
		//try - catch -finally 구조로 작성할것 
		
		try {
			 //1. JDBC드라이버 불러오기
			 // Class : 클래스에 대한 객체를 동적으로 생성
			 Class.forName( DRV );
			 
			 //2. 데이터 베이스 연결
			 conn=DriverManager.getConnection(URL,USR,PWD);
			 // 3.실행할 SQL 질의 작성
			 pstmt = conn.prepareStatement ( SQL); 
			 // 4-1. SQL 질의를 실행하고 결과를 받음 
			 rs= pstmt.executeQuery();
			 // 4-2. 받은 결과 처리
			 if (rs.next()) {  //결과에서 데이터가 존재하면 계속 반복해서 처리
				 do{
					   // rs.getxxx() : ResultSet  객체에서 테이터를 가져옴    
					 System.out.println( rs.getString("employee_id"));
				 } while (rs.next());
			 
			 }else {       //결과에 데이터가 없으면 
				 System.out.println("데이터가 없어");
			        }
			 }
		   
		catch (Exception ex) {
			ex.printStackTrace(); 
		   }
		finally {
			   //5. JDBC 객체 해제 
			   if (rs!=null) try {rs.close(); rs =null ;} catch (Exception e) {};
			   if (pstmt!= null ) try { pstmt.close(); pstmt =null; } catch (Exception e) {}; 
			   if (conn!= null) try { conn.close(); conn=null; } catch (Exception e) {}; 
			   }
	
	
	}//     
		
		
		
		
		
	}//

